#ifndef UNITTEST_REPORTASSERTIMPL_HPP
#define UNITTEST_REPORTASSERTIMPL_HPP

#include "HelperMacros.hpp"
#include <csetjmp>

namespace UnitTest {
    class TestResults;
    class TestDetails;
    namespace Detail {
        void ExpectAssert(bool expected);
        void ReportAssertEx(TestResults* testResults,
                        const TestDetails* testDetails,
                        char const* description,
                        char const* filename,
                        int lineNumber);
        bool AssertExpected();

        #define UNITTEST_SET_ASSERT_JUMP_TARGET() UNITTEST_SETJMP(*UnitTest::Detail::GetAssertJmpBuf())
    }
}

#endif /* #define UNITTEST_REPORTASSERTIMPL_HPP */
